import { useIntersectionObserver, useIntervalFn } from "@vueuse/core";
import { onUnmounted, ref } from "vue";

// 数据懒加载
export function useLazyData (apiFn: () => void) {
  const target = ref<HTMLAreaElement | null>(null)
  const { stop } = useIntersectionObserver(
    target,
    ([{ isIntersecting }]) => {
      if (isIntersecting) {
        // 停止监听
        stop()
        // 加载数据
        apiFn()
      }
    },
    {
      // threshold 容器和可视区交叉的占比（进入的面积/容器完整面试） 取值，0-1 之间，默认比0大，所以需要滚动较多才能触发进入可视区域事件。
      threshold: 0
    }
  )
  return target
}



// 倒计时

export function useCountDown (count: number = 60) {
  const time = ref(0)
  const { pause, resume } = useIntervalFn(
    () => {
      time.value--
      if (time.value === 0) {
        // 停止
        pause()
      }
    },
    1000,
    { immediate: false }
  )

  // 组件销毁时清除定时器
  onUnmounted(() => {
    pause()
  })

  const start = () => {
    time.value = count
    // 开始
    resume()
  }

  return {
    time,
    start
  }
}